/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Principal.regresion;

/**
 *
 * @author JONATHAN
 */
public class Cramer {
       //sustituye los valores de b en a en la posicion pos

    public static double[][] sustituye(double matriz[][], double vector[], int posicion) {
        double c[][] = new double[matriz.length][matriz.length];
        for (int i = 0; i < matriz.length; i++) {
            for (int j = 0; j < matriz[i].length; j++) {
                if (j == posicion) {
                    c[i][j] = vector[i];
                } else {
                    c[i][j] = matriz[i][j];
                }
            }
        }
        return c;
    }

     public static double Llamar_determinante(double[][] matriz) {
        double determinante = 0;
        determinante = matriz[0][0] * matriz[1][1] * matriz[2][2]
                + matriz[0][1] * matriz[1][2] * matriz[2][0]
                + matriz[0][2] * matriz[1][0] * matriz[2][1]
                - (matriz[0][2] * matriz[1][1] * matriz[2][0]
                + matriz[0][1] * matriz[1][0] * matriz[2][2]
                + matriz[0][0] * matriz[1][2] * matriz[2][1]);

        System.out.println("Matriz");
        for (int fila = 0; fila < 3; fila++) {
            for (int col = 0; col < 3; col++) {
                System.out.print(matriz[fila][col] + " - ");
            }
            System.out.println();
        }
        return determinante;
    }  
     
     
         /**
     *
     * @param a <code>int [][]</code>  matriz para el determinante
     * @return det <code>int</code> valor del determinante
     */
    public int determinante(int a[][]) {
            int c[][]=new int[a.length+(a.length-1)][a.length];
            int det = 0;

            //almacena los resultados parciales
            int par[]=new int[(a.length)*2];

            for (int i = 0; i < a.length; i++) {
                    for (int j = 0; j < a[i].length; j++) {
                                    c[i][j] =a [i][j];
                    }

            }
            int k = 0;
            for (int i = a.length;i < c.length; i++) {
                    for (int j = 0; j < a.length; j++) {
                                    c[i][j] = a[k][j];
                    }
                    k++;
            }

            //calcula la suma de los productos y la inserta en par
            k = 0;
            int temp = 1;
            int inc = 1;

            for (int i=0; i< a.length;i++) {
                    for (int j = 0; j < a[i].length; j++) {
                            temp = temp * c[k][j];
                            k++;
                    }
                    k = inc;
                    par[i] = temp;
                    temp = 1;
                    inc++;
            }

            //calcula la resta de los productos y la inserta en par
            k = a.length-1;

            temp = 1;
            inc = a.length-1;

            int l = (par.length) / 2;

            for (int i = 0; i < a.length; i++) {
                    for (int j = 0; j < a[i].length; j++) {
                            temp = temp * c[k][j];
                            k--; //k=k-1;
                    }
                    par[l] = -temp;
                    temp = 1;

                    inc++;
                    k = inc;
                    l++;
            }

            det = suma(par);
            return det;

    }
    
        /**
     *
     * @param a <code> int [][]</code>
     * @return reulst <code>int</code>
     */
    public int suma(int a[]) {
            int result = 0;
            for (int  i= 0; i < a.length; i++) {
                    result = result + a[i];
            }

            return result;

    }
}
